package com.cci.kangdao.dao;

import com.cci.kangdao.dao.model.AppVersionT;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.mybatis.spring.annotation.MapperScan;

import java.util.List;
import java.util.Map;

/**
 * 用户反馈
 * 
 * @author fengshuai
 *
 */
@MapperScan
public interface UserFeedbackDao {
	/**
	 * 用户反馈信息
	 * 
	 * @param map
	 */
	public int submitFeedback(Map<String, Object> map);
	/**
	 * 获取App版本信息
	 * @param map
	 */
	public List<AppVersionT> getAppVersion(Map<String, Object> map);

	/*
	 * @description: 获取App版本信息升级版
	 * @param: map
	 * @return: List<AppVersionT>
	 * @author: yinguili
	 * @date: 2022/9/9 10:19
	 */
	List<AppVersionT> getAppVersionPlus(Map<String, Object> map);

	/*
	 * @description: app升级用户忽略记录表
	 * @param:  
	 * @return: void 
	 * @author: yinguili
	 * @date: 2022/9/8 14:14
	 */ 
	int addUserIgnoreUpgradeRecord(Map<String, Object> map);

	Map<String,Object> getIgnoreUpgradeRecordById(Long userId);

	List<String> getFrameFunction(@Param("frameFunctionIds")List<Long> frameFunctionIds);
	/**
	 * 获取问题类型列表
	 * @return
	 */
	List<Map<String, Object>> getPromType();
	
	/**
	 * 获取反馈渠道列表
	 * @return
	 */
	List<Map<String, Object>> getUserGroup();
	
	/**
	 * 获取功能列表
	 * @return
	 */
	List<Map<String, Object>> getFunList();
	
	/**
	 * 获取机型列表
	 * @return
	 */
	List<Map<String, Object>> getEngineTypeList();
	
	/**
	 * 用户反馈信息
	 * 
	 * @param map
	 */
	public int submitFeedbackV4(Map<String, Object> map);

	/**
	 * 用户反馈信息
	 *
	 * @param map
	 */
	public int submitFeedbackV5(Map<String, Object> map);

	@Select("select top 1 * from FeedBackSendConfig_T where SendFunctionName = #{sendFunctionName} and Flag = 0")
	Map<String,Object> getFeedBackDealerBySendFunctionName(@Param("sendFunctionName")String sendFunctionName);
	
	/**
	 * 设置单号
	 * @param id
	 * @param billNo
	 * @return
	 */
	void setBillNo(@Param("id")Long id, @Param("billNo")String billNo);
	
	/**
	 * 获取意见反馈列表
	 * @param map
	 * @return
	 */
	List<Map<String, Object>> getFeedBackList(Map<String, Object> map);
	
	/**
	 * 获取意见反馈详情
	 * @param id
	 * @return
	 */
	Map<String, Object> getFeedBackInfo(@Param("id")Long id);
	
	/**
	 * 已读意见反馈
	 * @param id
	 * @return
	 */
	int readFeedBack(@Param("id")Long id);
	
	/**
	 * 获取未读消息数目
	 * @return
	 */
	int getUnReadMsgCount(@Param("userId")Long userId);

	/**
	 * 更新个人所有未读消息为已读
	 * @param userId
	 */
	int updateNotifyReadStatusByReceiverId(@Param("userId")Long userId);
}
